using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class UI_ItemSlot : MonoBehaviour, IPointerDownHandler, IPointerEnterHandler, IPointerExitHandler
{
    // 序列化字段，用于在编辑器中设置物品图片
    [SerializeField] protected Image itemImage;
    // 序列化字段，用于在编辑器中设置物品文本
    [SerializeField] protected TextMeshProUGUI itemText;

    // 公共字段，表示库存物品
    public InventoryItem item;
    // UI
    protected UI ui;

    protected virtual void Start()
    {
        ui = GetComponentInParent<UI>();
    }

    // 更新物品槽的方法
    public void UpdateSlot(InventoryItem _newitem)
    {
        // 将新物品赋值给当前物品
        item = _newitem;

        // 将物品图片的颜色设置为白色
        itemImage.color = Color.white;
        if (item != null)
        {
            // 如果物品不为空，将物品的图标设置为物品数据中的图标
            itemImage.sprite = item.data.icon;
            if (item.stackSize > 1)
            {
                // 如果物品堆叠数量大于1，将堆叠数量显示在文本中
                itemText.text = item.stackSize.ToString();
            }
            else
            {
                // 否则，将文本设置为空
                itemText.text = "";
            }
        }
    }

    //清除UI
    public void CleanUpSlot()
    {
        item = null;
        itemImage.sprite = null;
        itemImage.color = Color.clear;
        itemText.text = "";
    }

    //点击物品槽
    public virtual void OnPointerDown(PointerEventData eventData)
    {

        // 如果item或item.data为空，则返回
        if (item == null || item.data == null)
        {
            return;
        }

        // 丢掉物品
        if (Input.GetKey(KeyCode.LeftControl))
        {
            Inventory.instance.RemoveItem(item.data);
            return;
        }

        if (item.data.itemType == ItemType.Equipment)
        {
            // 装备武器
            Inventory.instance.EquipItem(item.data);
        }

        ui.itemToolTip.HideToolTip();
    }

    //鼠标放上去显示装备信息
    public void OnPointerEnter(PointerEventData eventData)
    {
        // 如果item或item.data为空，则返回
        if (item == null || item.data == null)
        {
            return;
        }
        ui.itemToolTip.ShowToolTip(item.data as ItemData_Equipment);
    }

    //鼠标移走隐藏信息框
    public void OnPointerExit(PointerEventData eventData)
    {

        ui.itemToolTip.HideToolTip();
    }
}